// Copyright 2014 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef TRUNKS_MOCK_TPM_H_
#define TRUNKS_MOCK_TPM_H_

#include "trunks/tpm_generated.h"

#include <string>

#include <base/callback.h>
#include <gmock/gmock.h>

namespace trunks {

class MockTpm : public Tpm {
 public:
  MockTpm();
  ~MockTpm() override;

  MOCK_METHOD3(Startup,
      void(const TPM_SU& startup_type,
           AuthorizationDelegate* authorization_delegate,
           const StartupResponse& callback));
  MOCK_METHOD2(StartupSync,
      TPM_RC(const TPM_SU& startup_type,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD3(Shutdown,
      void(const TPM_SU& shutdown_type,
           AuthorizationDelegate* authorization_delegate,
           const ShutdownResponse& callback));
  MOCK_METHOD2(ShutdownSync,
      TPM_RC(const TPM_SU& shutdown_type,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD3(SelfTest,
      void(const TPMI_YES_NO& full_test,
           AuthorizationDelegate* authorization_delegate,
           const SelfTestResponse& callback));
  MOCK_METHOD2(SelfTestSync,
      TPM_RC(const TPMI_YES_NO& full_test,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD3(IncrementalSelfTest,
      void(const TPML_ALG& to_test,
           AuthorizationDelegate* authorization_delegate,
           const IncrementalSelfTestResponse& callback));
  MOCK_METHOD3(IncrementalSelfTestSync,
      TPM_RC(const TPML_ALG& to_test,
             TPML_ALG* to_do_list,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD2(GetTestResult,
      void(AuthorizationDelegate* authorization_delegate,
           const GetTestResultResponse& callback));
  MOCK_METHOD3(GetTestResultSync,
      TPM_RC(TPM2B_MAX_BUFFER* out_data,
             TPM_RC* test_result,
             AuthorizationDelegate* authorization_delegate));
  // Too many args to mock, forward to *Short version.
  void StartAuthSession(const TPMI_DH_OBJECT& tpm_key,
                        const std::string& tpm_key_name,
                        const TPMI_DH_ENTITY& bind,
                        const std::string& bind_name,
                        const TPM2B_NONCE& nonce_caller,
                        const TPM2B_ENCRYPTED_SECRET& encrypted_salt,
                        const TPM_SE& session_type,
                        const TPMT_SYM_DEF& symmetric,
                        const TPMI_ALG_HASH& auth_hash,
                        AuthorizationDelegate* authorization_delegate,
                        const StartAuthSessionResponse& callback) override;
  MOCK_METHOD9(StartAuthSessionShort,
      void(const TPMI_DH_OBJECT& tpm_key,
           const TPMI_DH_ENTITY& bind,
           const TPM2B_NONCE& nonce_caller,
           const TPM2B_ENCRYPTED_SECRET& encrypted_salt,
           const TPM_SE& session_type,
           const TPMT_SYM_DEF& symmetric,
           const TPMI_ALG_HASH& auth_hash,
           AuthorizationDelegate* authorization_delegate,
           const StartAuthSessionResponse& callback));
  // Too many args to mock, forward to *Short version.
  TPM_RC StartAuthSessionSync(
      const TPMI_DH_OBJECT& tpm_key,
      const std::string& tpm_key_name,
      const TPMI_DH_ENTITY& bind,
      const std::string& bind_name,
      const TPM2B_NONCE& nonce_caller,
      const TPM2B_ENCRYPTED_SECRET& encrypted_salt,
      const TPM_SE& session_type,
      const TPMT_SYM_DEF& symmetric,
      const TPMI_ALG_HASH& auth_hash,
      TPMI_SH_AUTH_SESSION* session_handle,
      TPM2B_NONCE* nonce_tpm,
      AuthorizationDelegate* authorization_delegate) override;
  MOCK_METHOD10(StartAuthSessionSyncShort,
      TPM_RC(const TPMI_DH_OBJECT& tpm_key,
             const TPMI_DH_ENTITY& bind,
             const TPM2B_NONCE& nonce_caller,
             const TPM2B_ENCRYPTED_SECRET& encrypted_salt,
             const TPM_SE& session_type,
             const TPMT_SYM_DEF& symmetric,
             const TPMI_ALG_HASH& auth_hash,
             TPMI_SH_AUTH_SESSION* session_handle,
             TPM2B_NONCE* nonce_tpm,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD4(PolicyRestart,
      void(const TPMI_SH_POLICY& session_handle,
           const std::string& session_handle_name,
           AuthorizationDelegate* authorization_delegate,
           const PolicyRestartResponse& callback));
  MOCK_METHOD3(PolicyRestartSync,
      TPM_RC(const TPMI_SH_POLICY& session_handle,
             const std::string& session_handle_name,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD8(Create,
      void(const TPMI_DH_OBJECT& parent_handle,
           const std::string& parent_handle_name,
           const TPM2B_SENSITIVE_CREATE& in_sensitive,
           const TPM2B_PUBLIC& in_public,
           const TPM2B_DATA& outside_info,
           const TPML_PCR_SELECTION& creation_pcr,
           AuthorizationDelegate* authorization_delegate,
           const CreateResponse& callback));
  // Too many args to mock, forward to *Short version.
  TPM_RC CreateSync(const TPMI_DH_OBJECT& parent_handle,
                    const std::string& parent_handle_name,
                    const TPM2B_SENSITIVE_CREATE& in_sensitive,
                    const TPM2B_PUBLIC& in_public,
                    const TPM2B_DATA& outside_info,
                    const TPML_PCR_SELECTION& creation_pcr,
                    TPM2B_PRIVATE* out_private,
                    TPM2B_PUBLIC* out_public,
                    TPM2B_CREATION_DATA* creation_data,
                    TPM2B_DIGEST* creation_hash,
                    TPMT_TK_CREATION* creation_ticket,
                    AuthorizationDelegate* authorization_delegate) override;
  MOCK_METHOD10(CreateSyncShort,
      TPM_RC(const TPMI_DH_OBJECT& parent_handle,
             const TPM2B_SENSITIVE_CREATE& in_sensitive,
             const TPM2B_PUBLIC& in_public,
             const TPML_PCR_SELECTION& creation_pcr,
             TPM2B_PRIVATE* out_private,
             TPM2B_PUBLIC* out_public,
             TPM2B_CREATION_DATA* creation_data,
             TPM2B_DIGEST* creation_hash,
             TPMT_TK_CREATION* creation_ticket,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD6(Load,
      void(const TPMI_DH_OBJECT& parent_handle,
           const std::string& parent_handle_name,
           const TPM2B_PRIVATE& in_private,
           const TPM2B_PUBLIC& in_public,
           AuthorizationDelegate* authorization_delegate,
           const LoadResponse& callback));
  MOCK_METHOD7(LoadSync,
      TPM_RC(const TPMI_DH_OBJECT& parent_handle,
             const std::string& parent_handle_name,
             const TPM2B_PRIVATE& in_private,
             const TPM2B_PUBLIC& in_public,
             TPM_HANDLE* object_handle,
             TPM2B_NAME* name,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD6(LoadExternal,
      void(const TPMI_RH_HIERARCHY& hierarchy,
           const std::string& hierarchy_name,
           const TPM2B_SENSITIVE& in_private,
           const TPM2B_PUBLIC& in_public,
           AuthorizationDelegate* authorization_delegate,
           const LoadExternalResponse& callback));
  MOCK_METHOD7(LoadExternalSync,
      TPM_RC(const TPMI_RH_HIERARCHY& hierarchy,
             const std::string& hierarchy_name,
             const TPM2B_SENSITIVE& in_private,
             const TPM2B_PUBLIC& in_public,
             TPM_HANDLE* object_handle,
             TPM2B_NAME* name,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD4(ReadPublic,
      void(const TPMI_DH_OBJECT& object_handle,
           const std::string& object_handle_name,
           AuthorizationDelegate* authorization_delegate,
           const ReadPublicResponse& callback));
  MOCK_METHOD6(ReadPublicSync,
      TPM_RC(const TPMI_DH_OBJECT& object_handle,
             const std::string& object_handle_name,
             TPM2B_PUBLIC* out_public,
             TPM2B_NAME* name,
             TPM2B_NAME* qualified_name,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD8(ActivateCredential,
      void(const TPMI_DH_OBJECT& activate_handle,
           const std::string& activate_handle_name,
           const TPMI_DH_OBJECT& key_handle,
           const std::string& key_handle_name,
           const TPM2B_ID_OBJECT& credential_blob,
           const TPM2B_ENCRYPTED_SECRET& secret,
           AuthorizationDelegate* authorization_delegate,
           const ActivateCredentialResponse& callback));
  MOCK_METHOD8(ActivateCredentialSync,
      TPM_RC(const TPMI_DH_OBJECT& activate_handle,
             const std::string& activate_handle_name,
             const TPMI_DH_OBJECT& key_handle,
             const std::string& key_handle_name,
             const TPM2B_ID_OBJECT& credential_blob,
             const TPM2B_ENCRYPTED_SECRET& secret,
             TPM2B_DIGEST* cert_info,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD6(MakeCredential,
      void(const TPMI_DH_OBJECT& handle,
           const std::string& handle_name,
           const TPM2B_DIGEST& credential,
           const TPM2B_NAME& object_name,
           AuthorizationDelegate* authorization_delegate,
           const MakeCredentialResponse& callback));
  MOCK_METHOD6(MakeCredentialSync,
      TPM_RC(const TPMI_DH_OBJECT& handle,
             const std::string& handle_name,
             const TPM2B_DIGEST& credential,
             const TPM2B_NAME& object_name,
             TPM2B_ID_OBJECT* credential_blob,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD4(Unseal,
      void(const TPMI_DH_OBJECT& item_handle,
           const std::string& item_handle_name,
           AuthorizationDelegate* authorization_delegate,
           const UnsealResponse& callback));
  MOCK_METHOD4(UnsealSync,
      TPM_RC(const TPMI_DH_OBJECT& item_handle,
             const std::string& item_handle_name,
             TPM2B_SENSITIVE_DATA* out_data,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD7(ObjectChangeAuth,
      void(const TPMI_DH_OBJECT& object_handle,
           const std::string& object_handle_name,
           const TPMI_DH_OBJECT& parent_handle,
           const std::string& parent_handle_name,
           const TPM2B_AUTH& new_auth,
           AuthorizationDelegate* authorization_delegate,
           const ObjectChangeAuthResponse& callback));
  MOCK_METHOD7(ObjectChangeAuthSync,
      TPM_RC(const TPMI_DH_OBJECT& object_handle,
             const std::string& object_handle_name,
             const TPMI_DH_OBJECT& parent_handle,
             const std::string& parent_handle_name,
             const TPM2B_AUTH& new_auth,
             TPM2B_PRIVATE* out_private,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD8(Duplicate,
      void(const TPMI_DH_OBJECT& object_handle,
           const std::string& object_handle_name,
           const TPMI_DH_OBJECT& new_parent_handle,
           const std::string& new_parent_handle_name,
           const TPM2B_DATA& encryption_key_in,
           const TPMT_SYM_DEF_OBJECT& symmetric_alg,
           AuthorizationDelegate* authorization_delegate,
           const DuplicateResponse& callback));
  MOCK_METHOD9(DuplicateSync,
      TPM_RC(const TPMI_DH_OBJECT& object_handle,
             const std::string& object_handle_name,
             const TPMI_DH_OBJECT& new_parent_handle,
             const std::string& new_parent_handle_name,
             const TPM2B_DATA& encryption_key_in,
             const TPMT_SYM_DEF_OBJECT& symmetric_alg,
             TPM2B_DATA* encryption_key_out,
             TPM2B_PRIVATE* duplicate,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD8(Rewrap,
      void(const TPMI_DH_OBJECT& old_parent,
           const std::string& old_parent_name,
           const TPMI_DH_OBJECT& new_parent,
           const std::string& new_parent_name,
           const TPM2B_PRIVATE& in_duplicate,
           const TPM2B_NAME& name,
           AuthorizationDelegate* authorization_delegate,
           const RewrapResponse& callback));
  MOCK_METHOD8(RewrapSync,
      TPM_RC(const TPMI_DH_OBJECT& old_parent,
             const std::string& old_parent_name,
             const TPMI_DH_OBJECT& new_parent,
             const std::string& new_parent_name,
             const TPM2B_PRIVATE& in_duplicate,
             const TPM2B_NAME& name,
             TPM2B_PRIVATE* out_duplicate,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD9(Import,
      void(const TPMI_DH_OBJECT& parent_handle,
           const std::string& parent_handle_name,
           const TPM2B_DATA& encryption_key,
           const TPM2B_PUBLIC& object_public,
           const TPM2B_PRIVATE& duplicate,
           const TPM2B_ENCRYPTED_SECRET& in_sym_seed,
           const TPMT_SYM_DEF_OBJECT& symmetric_alg,
           AuthorizationDelegate* authorization_delegate,
           const ImportResponse& callback));
  MOCK_METHOD9(ImportSync,
      TPM_RC(const TPMI_DH_OBJECT& parent_handle,
             const std::string& parent_handle_name,
             const TPM2B_DATA& encryption_key,
             const TPM2B_PUBLIC& object_public,
             const TPM2B_PRIVATE& duplicate,
             const TPM2B_ENCRYPTED_SECRET& in_sym_seed,
             const TPMT_SYM_DEF_OBJECT& symmetric_alg,
             TPM2B_PRIVATE* out_private,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD7(RSA_Encrypt,
      void(const TPMI_DH_OBJECT& key_handle,
           const std::string& key_handle_name,
           const TPM2B_PUBLIC_KEY_RSA& message,
           const TPMT_RSA_DECRYPT& in_scheme,
           const TPM2B_DATA& label,
           AuthorizationDelegate* authorization_delegate,
           const RSA_EncryptResponse& callback));
  MOCK_METHOD7(RSA_EncryptSync,
      TPM_RC(const TPMI_DH_OBJECT& key_handle,
             const std::string& key_handle_name,
             const TPM2B_PUBLIC_KEY_RSA& message,
             const TPMT_RSA_DECRYPT& in_scheme,
             const TPM2B_DATA& label,
             TPM2B_PUBLIC_KEY_RSA* out_data,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD7(RSA_Decrypt,
      void(const TPMI_DH_OBJECT& key_handle,
           const std::string& key_handle_name,
           const TPM2B_PUBLIC_KEY_RSA& cipher_text,
           const TPMT_RSA_DECRYPT& in_scheme,
           const TPM2B_DATA& label,
           AuthorizationDelegate* authorization_delegate,
           const RSA_DecryptResponse& callback));
  MOCK_METHOD7(RSA_DecryptSync,
      TPM_RC(const TPMI_DH_OBJECT& key_handle,
             const std::string& key_handle_name,
             const TPM2B_PUBLIC_KEY_RSA& cipher_text,
             const TPMT_RSA_DECRYPT& in_scheme,
             const TPM2B_DATA& label,
             TPM2B_PUBLIC_KEY_RSA* message,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD4(ECDH_KeyGen,
      void(const TPMI_DH_OBJECT& key_handle,
           const std::string& key_handle_name,
           AuthorizationDelegate* authorization_delegate,
           const ECDH_KeyGenResponse& callback));
  MOCK_METHOD5(ECDH_KeyGenSync,
      TPM_RC(const TPMI_DH_OBJECT& key_handle,
             const std::string& key_handle_name,
             TPM2B_ECC_POINT* z_point,
             TPM2B_ECC_POINT* pub_point,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD5(ECDH_ZGen,
      void(const TPMI_DH_OBJECT& key_handle,
           const std::string& key_handle_name,
           const TPM2B_ECC_POINT& in_point,
           AuthorizationDelegate* authorization_delegate,
           const ECDH_ZGenResponse& callback));
  MOCK_METHOD5(ECDH_ZGenSync,
      TPM_RC(const TPMI_DH_OBJECT& key_handle,
             const std::string& key_handle_name,
             const TPM2B_ECC_POINT& in_point,
             TPM2B_ECC_POINT* out_point,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD3(ECC_Parameters,
      void(const TPMI_ECC_CURVE& curve_id,
           AuthorizationDelegate* authorization_delegate,
           const ECC_ParametersResponse& callback));
  MOCK_METHOD3(ECC_ParametersSync,
      TPM_RC(const TPMI_ECC_CURVE& curve_id,
             TPMS_ALGORITHM_DETAIL_ECC* parameters,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD8(ZGen_2Phase,
      void(const TPMI_DH_OBJECT& key_a,
           const std::string& key_a_name,
           const TPM2B_ECC_POINT& in_qs_b,
           const TPM2B_ECC_POINT& in_qe_b,
           const TPMI_ECC_KEY_EXCHANGE& in_scheme,
           const UINT16& counter,
           AuthorizationDelegate* authorization_delegate,
           const ZGen_2PhaseResponse& callback));
  MOCK_METHOD9(ZGen_2PhaseSync,
      TPM_RC(const TPMI_DH_OBJECT& key_a,
             const std::string& key_a_name,
             const TPM2B_ECC_POINT& in_qs_b,
             const TPM2B_ECC_POINT& in_qe_b,
             const TPMI_ECC_KEY_EXCHANGE& in_scheme,
             const UINT16& counter,
             TPM2B_ECC_POINT* out_z1,
             TPM2B_ECC_POINT* out_z2,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD8(EncryptDecrypt,
      void(const TPMI_DH_OBJECT& key_handle,
           const std::string& key_handle_name,
           const TPMI_YES_NO& decrypt,
           const TPMI_ALG_SYM_MODE& mode,
           const TPM2B_IV& iv_in,
           const TPM2B_MAX_BUFFER& in_data,
           AuthorizationDelegate* authorization_delegate,
           const EncryptDecryptResponse& callback));
  MOCK_METHOD9(EncryptDecryptSync,
      TPM_RC(const TPMI_DH_OBJECT& key_handle,
             const std::string& key_handle_name,
             const TPMI_YES_NO& decrypt,
             const TPMI_ALG_SYM_MODE& mode,
             const TPM2B_IV& iv_in,
             const TPM2B_MAX_BUFFER& in_data,
             TPM2B_MAX_BUFFER* out_data,
             TPM2B_IV* iv_out,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD6(Hash,
      void(const TPMI_RH_HIERARCHY& hierarchy,
           const std::string& hierarchy_name,
           const TPM2B_MAX_BUFFER& data,
           const TPMI_ALG_HASH& hash_alg,
           AuthorizationDelegate* authorization_delegate,
           const HashResponse& callback));
  MOCK_METHOD7(HashSync,
      TPM_RC(const TPMI_RH_HIERARCHY& hierarchy,
             const std::string& hierarchy_name,
             const TPM2B_MAX_BUFFER& data,
             const TPMI_ALG_HASH& hash_alg,
             TPM2B_DIGEST* out_hash,
             TPMT_TK_HASHCHECK* validation,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD6(HMAC,
      void(const TPMI_DH_OBJECT& handle,
           const std::string& handle_name,
           const TPM2B_MAX_BUFFER& buffer,
           const TPMI_ALG_HASH& hash_alg,
           AuthorizationDelegate* authorization_delegate,
           const HMACResponse& callback));
  MOCK_METHOD6(HMACSync,
      TPM_RC(const TPMI_DH_OBJECT& handle,
             const std::string& handle_name,
             const TPM2B_MAX_BUFFER& buffer,
             const TPMI_ALG_HASH& hash_alg,
             TPM2B_DIGEST* out_hmac,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD3(GetRandom,
      void(const UINT16& bytes_requested,
           AuthorizationDelegate* authorization_delegate,
           const GetRandomResponse& callback));
  MOCK_METHOD3(GetRandomSync,
      TPM_RC(const UINT16& bytes_requested,
             TPM2B_DIGEST* random_bytes,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD3(StirRandom,
      void(const TPM2B_SENSITIVE_DATA& in_data,
           AuthorizationDelegate* authorization_delegate,
           const StirRandomResponse& callback));
  MOCK_METHOD2(StirRandomSync,
      TPM_RC(const TPM2B_SENSITIVE_DATA& in_data,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD6(HMAC_Start,
      void(const TPMI_DH_OBJECT& handle,
           const std::string& handle_name,
           const TPM2B_AUTH& auth,
           const TPMI_ALG_HASH& hash_alg,
           AuthorizationDelegate* authorization_delegate,
           const HMAC_StartResponse& callback));
  MOCK_METHOD6(HMAC_StartSync,
      TPM_RC(const TPMI_DH_OBJECT& handle,
             const std::string& handle_name,
             const TPM2B_AUTH& auth,
             const TPMI_ALG_HASH& hash_alg,
             TPMI_DH_OBJECT* sequence_handle,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD4(HashSequenceStart,
      void(const TPM2B_AUTH& auth,
           const TPMI_ALG_HASH& hash_alg,
           AuthorizationDelegate* authorization_delegate,
           const HashSequenceStartResponse& callback));
  MOCK_METHOD4(HashSequenceStartSync,
      TPM_RC(const TPM2B_AUTH& auth,
             const TPMI_ALG_HASH& hash_alg,
             TPMI_DH_OBJECT* sequence_handle,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD5(SequenceUpdate,
      void(const TPMI_DH_OBJECT& sequence_handle,
           const std::string& sequence_handle_name,
           const TPM2B_MAX_BUFFER& buffer,
           AuthorizationDelegate* authorization_delegate,
           const SequenceUpdateResponse& callback));
  MOCK_METHOD4(SequenceUpdateSync,
      TPM_RC(const TPMI_DH_OBJECT& sequence_handle,
             const std::string& sequence_handle_name,
             const TPM2B_MAX_BUFFER& buffer,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD7(SequenceComplete,
      void(const TPMI_DH_OBJECT& sequence_handle,
           const std::string& sequence_handle_name,
           const TPMI_RH_HIERARCHY& hierarchy,
           const std::string& hierarchy_name,
           const TPM2B_MAX_BUFFER& buffer,
           AuthorizationDelegate* authorization_delegate,
           const SequenceCompleteResponse& callback));
  MOCK_METHOD8(SequenceCompleteSync,
      TPM_RC(const TPMI_DH_OBJECT& sequence_handle,
             const std::string& sequence_handle_name,
             const TPMI_RH_HIERARCHY& hierarchy,
             const std::string& hierarchy_name,
             const TPM2B_MAX_BUFFER& buffer,
             TPM2B_DIGEST* result,
             TPMT_TK_HASHCHECK* validation,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD7(EventSequenceComplete,
      void(const TPMI_DH_PCR& pcr_handle,
           const std::string& pcr_handle_name,
           const TPMI_DH_OBJECT& sequence_handle,
           const std::string& sequence_handle_name,
           const TPM2B_MAX_BUFFER& buffer,
           AuthorizationDelegate* authorization_delegate,
           const EventSequenceCompleteResponse& callback));
  MOCK_METHOD7(EventSequenceCompleteSync,
      TPM_RC(const TPMI_DH_PCR& pcr_handle,
             const std::string& pcr_handle_name,
             const TPMI_DH_OBJECT& sequence_handle,
             const std::string& sequence_handle_name,
             const TPM2B_MAX_BUFFER& buffer,
             TPML_DIGEST_VALUES* results,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD8(Certify,
      void(const TPMI_DH_OBJECT& object_handle,
           const std::string& object_handle_name,
           const TPMI_DH_OBJECT& sign_handle,
           const std::string& sign_handle_name,
           const TPM2B_DATA& qualifying_data,
           const TPMT_SIG_SCHEME& in_scheme,
           AuthorizationDelegate* authorization_delegate,
           const CertifyResponse& callback));
  MOCK_METHOD9(CertifySync,
      TPM_RC(const TPMI_DH_OBJECT& object_handle,
             const std::string& object_handle_name,
             const TPMI_DH_OBJECT& sign_handle,
             const std::string& sign_handle_name,
             const TPM2B_DATA& qualifying_data,
             const TPMT_SIG_SCHEME& in_scheme,
             TPM2B_ATTEST* certify_info,
             TPMT_SIGNATURE* signature,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD10(CertifyCreation,
      void(const TPMI_DH_OBJECT& sign_handle,
           const std::string& sign_handle_name,
           const TPMI_DH_OBJECT& object_handle,
           const std::string& object_handle_name,
           const TPM2B_DATA& qualifying_data,
           const TPM2B_DIGEST& creation_hash,
           const TPMT_SIG_SCHEME& in_scheme,
           const TPMT_TK_CREATION& creation_ticket,
           AuthorizationDelegate* authorization_delegate,
           const CertifyCreationResponse& callback));
  // Too many args to mock, forward to *Short version.
  TPM_RC CertifyCreationSync(
      const TPMI_DH_OBJECT& sign_handle,
      const std::string& sign_handle_name,
      const TPMI_DH_OBJECT& object_handle,
      const std::string& object_handle_name,
      const TPM2B_DATA& qualifying_data,
      const TPM2B_DIGEST& creation_hash,
      const TPMT_SIG_SCHEME& in_scheme,
      const TPMT_TK_CREATION& creation_ticket,
      TPM2B_ATTEST* certify_info,
      TPMT_SIGNATURE* signature,
      AuthorizationDelegate* authorization_delegate) override;
  MOCK_METHOD9(CertifyCreationSyncShort,
      TPM_RC(const TPMI_DH_OBJECT& sign_handle,
             const TPMI_DH_OBJECT& object_handle,
             const TPM2B_DATA& qualifying_data,
             const TPM2B_DIGEST& creation_hash,
             const TPMT_SIG_SCHEME& in_scheme,
             const TPMT_TK_CREATION& creation_ticket,
             TPM2B_ATTEST* certify_info,
             TPMT_SIGNATURE* signature,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD7(Quote,
      void(const TPMI_DH_OBJECT& sign_handle,
           const std::string& sign_handle_name,
           const TPM2B_DATA& qualifying_data,
           const TPMT_SIG_SCHEME& in_scheme,
           const TPML_PCR_SELECTION& pcrselect,
           AuthorizationDelegate* authorization_delegate,
           const QuoteResponse& callback));
  MOCK_METHOD8(QuoteSync,
      TPM_RC(const TPMI_DH_OBJECT& sign_handle,
             const std::string& sign_handle_name,
             const TPM2B_DATA& qualifying_data,
             const TPMT_SIG_SCHEME& in_scheme,
             const TPML_PCR_SELECTION& pcrselect,
             TPM2B_ATTEST* quoted,
             TPMT_SIGNATURE* signature,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD10(GetSessionAuditDigest,
      void(const TPMI_RH_ENDORSEMENT& privacy_admin_handle,
           const std::string& privacy_admin_handle_name,
           const TPMI_DH_OBJECT& sign_handle,
           const std::string& sign_handle_name,
           const TPMI_SH_HMAC& session_handle,
           const std::string& session_handle_name,
           const TPM2B_DATA& qualifying_data,
           const TPMT_SIG_SCHEME& in_scheme,
           AuthorizationDelegate* authorization_delegate,
           const GetSessionAuditDigestResponse& callback));
  // Too many args to mock, forward to *Short version.
  TPM_RC GetSessionAuditDigestSync(
      const TPMI_RH_ENDORSEMENT& privacy_admin_handle,
      const std::string& privacy_admin_handle_name,
      const TPMI_DH_OBJECT& sign_handle,
      const std::string& sign_handle_name,
      const TPMI_SH_HMAC& session_handle,
      const std::string& session_handle_name,
      const TPM2B_DATA& qualifying_data,
      const TPMT_SIG_SCHEME& in_scheme,
      TPM2B_ATTEST* audit_info,
      TPMT_SIGNATURE* signature,
      AuthorizationDelegate* authorization_delegate) override;
  MOCK_METHOD8(GetSessionAuditDigestSyncShort,
      TPM_RC(const TPMI_RH_ENDORSEMENT& privacy_admin_handle,
             const TPMI_DH_OBJECT& sign_handle,
             const TPMI_SH_HMAC& session_handle,
             const TPM2B_DATA& qualifying_data,
             const TPMT_SIG_SCHEME& in_scheme,
             TPM2B_ATTEST* audit_info,
             TPMT_SIGNATURE* signature,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD8(GetCommandAuditDigest,
      void(const TPMI_RH_ENDORSEMENT& privacy_handle,
           const std::string& privacy_handle_name,
           const TPMI_DH_OBJECT& sign_handle,
           const std::string& sign_handle_name,
           const TPM2B_DATA& qualifying_data,
           const TPMT_SIG_SCHEME& in_scheme,
           AuthorizationDelegate* authorization_delegate,
           const GetCommandAuditDigestResponse& callback));
  MOCK_METHOD9(GetCommandAuditDigestSync,
      TPM_RC(const TPMI_RH_ENDORSEMENT& privacy_handle,
             const std::string& privacy_handle_name,
             const TPMI_DH_OBJECT& sign_handle,
             const std::string& sign_handle_name,
             const TPM2B_DATA& qualifying_data,
             const TPMT_SIG_SCHEME& in_scheme,
             TPM2B_ATTEST* audit_info,
             TPMT_SIGNATURE* signature,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD8(GetTime,
      void(const TPMI_RH_ENDORSEMENT& privacy_admin_handle,
           const std::string& privacy_admin_handle_name,
           const TPMI_DH_OBJECT& sign_handle,
           const std::string& sign_handle_name,
           const TPM2B_DATA& qualifying_data,
           const TPMT_SIG_SCHEME& in_scheme,
           AuthorizationDelegate* authorization_delegate,
           const GetTimeResponse& callback));
  MOCK_METHOD9(GetTimeSync,
      TPM_RC(const TPMI_RH_ENDORSEMENT& privacy_admin_handle,
             const std::string& privacy_admin_handle_name,
             const TPMI_DH_OBJECT& sign_handle,
             const std::string& sign_handle_name,
             const TPM2B_DATA& qualifying_data,
             const TPMT_SIG_SCHEME& in_scheme,
             TPM2B_ATTEST* time_info,
             TPMT_SIGNATURE* signature,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD8(Commit,
      void(const TPMI_DH_OBJECT& sign_handle,
           const std::string& sign_handle_name,
           const UINT32& param_size,
           const TPM2B_ECC_POINT& p1,
           const TPM2B_SENSITIVE_DATA& s2,
           const TPM2B_ECC_PARAMETER& y2,
           AuthorizationDelegate* authorization_delegate,
           const CommitResponse& callback));
  // Too many args to mock, forward to *Short version.
  TPM_RC CommitSync(const TPMI_DH_OBJECT& sign_handle,
                    const std::string& sign_handle_name,
                    const UINT32& param_size,
                    const TPM2B_ECC_POINT& p1,
                    const TPM2B_SENSITIVE_DATA& s2,
                    const TPM2B_ECC_PARAMETER& y2,
                    UINT32* param_size_out,
                    TPM2B_ECC_POINT* k,
                    TPM2B_ECC_POINT* l,
                    TPM2B_ECC_POINT* e,
                    UINT16* counter,
                    AuthorizationDelegate* authorization_delegate) override;
  MOCK_METHOD10(CommitSyncShort,
      TPM_RC(const TPMI_DH_OBJECT& sign_handle,
             const UINT32& param_size,
             const TPM2B_ECC_POINT& p1,
             const TPM2B_ECC_PARAMETER& y2,
             UINT32* param_size_out,
             TPM2B_ECC_POINT* k,
             TPM2B_ECC_POINT* l,
             TPM2B_ECC_POINT* e,
             UINT16* counter,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD4(EC_Ephemeral,
      void(const UINT32& param_size,
           const TPMI_ECC_CURVE& curve_id,
           AuthorizationDelegate* authorization_delegate,
           const EC_EphemeralResponse& callback));
  MOCK_METHOD6(EC_EphemeralSync,
      TPM_RC(const UINT32& param_size,
             const TPMI_ECC_CURVE& curve_id,
             UINT32* param_size_out,
             TPM2B_ECC_POINT* q,
             UINT16* counter,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD6(VerifySignature,
      void(const TPMI_DH_OBJECT& key_handle,
           const std::string& key_handle_name,
           const TPM2B_DIGEST& digest,
           const TPMT_SIGNATURE& signature,
           AuthorizationDelegate* authorization_delegate,
           const VerifySignatureResponse& callback));
  MOCK_METHOD6(VerifySignatureSync,
      TPM_RC(const TPMI_DH_OBJECT& key_handle,
             const std::string& key_handle_name,
             const TPM2B_DIGEST& digest,
             const TPMT_SIGNATURE& signature,
             TPMT_TK_VERIFIED* validation,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD7(Sign,
      void(const TPMI_DH_OBJECT& key_handle,
           const std::string& key_handle_name,
           const TPM2B_DIGEST& digest,
           const TPMT_SIG_SCHEME& in_scheme,
           const TPMT_TK_HASHCHECK& validation,
           AuthorizationDelegate* authorization_delegate,
           const SignResponse& callback));
  MOCK_METHOD7(SignSync,
      TPM_RC(const TPMI_DH_OBJECT& key_handle,
             const std::string& key_handle_name,
             const TPM2B_DIGEST& digest,
             const TPMT_SIG_SCHEME& in_scheme,
             const TPMT_TK_HASHCHECK& validation,
             TPMT_SIGNATURE* signature,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD7(SetCommandCodeAuditStatus,
      void(const TPMI_RH_PROVISION& auth,
           const std::string& auth_name,
           const TPMI_ALG_HASH& audit_alg,
           const TPML_CC& set_list,
           const TPML_CC& clear_list,
           AuthorizationDelegate* authorization_delegate,
           const SetCommandCodeAuditStatusResponse& callback));
  MOCK_METHOD6(SetCommandCodeAuditStatusSync,
      TPM_RC(const TPMI_RH_PROVISION& auth,
             const std::string& auth_name,
             const TPMI_ALG_HASH& audit_alg,
             const TPML_CC& set_list,
             const TPML_CC& clear_list,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD5(PCR_Extend,
      void(const TPMI_DH_PCR& pcr_handle,
           const std::string& pcr_handle_name,
           const TPML_DIGEST_VALUES& digests,
           AuthorizationDelegate* authorization_delegate,
           const PCR_ExtendResponse& callback));
  MOCK_METHOD4(PCR_ExtendSync,
      TPM_RC(const TPMI_DH_PCR& pcr_handle,
             const std::string& pcr_handle_name,
             const TPML_DIGEST_VALUES& digests,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD5(PCR_Event,
      void(const TPMI_DH_PCR& pcr_handle,
           const std::string& pcr_handle_name,
           const TPM2B_EVENT& event_data,
           AuthorizationDelegate* authorization_delegate,
           const PCR_EventResponse& callback));
  MOCK_METHOD5(PCR_EventSync,
      TPM_RC(const TPMI_DH_PCR& pcr_handle,
             const std::string& pcr_handle_name,
             const TPM2B_EVENT& event_data,
             TPML_DIGEST_VALUES* digests,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD3(PCR_Read,
      void(const TPML_PCR_SELECTION& pcr_selection_in,
           AuthorizationDelegate* authorization_delegate,
           const PCR_ReadResponse& callback));
  MOCK_METHOD5(PCR_ReadSync,
      TPM_RC(const TPML_PCR_SELECTION& pcr_selection_in,
             UINT32* pcr_update_counter,
             TPML_PCR_SELECTION* pcr_selection_out,
             TPML_DIGEST* pcr_values,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD5(PCR_Allocate,
      void(const TPMI_RH_PLATFORM& auth_handle,
           const std::string& auth_handle_name,
           const TPML_PCR_SELECTION& pcr_allocation,
           AuthorizationDelegate* authorization_delegate,
           const PCR_AllocateResponse& callback));
  MOCK_METHOD8(PCR_AllocateSync,
      TPM_RC(const TPMI_RH_PLATFORM& auth_handle,
             const std::string& auth_handle_name,
             const TPML_PCR_SELECTION& pcr_allocation,
             TPMI_YES_NO* allocation_success,
             UINT32* max_pcr,
             UINT32* size_needed,
             UINT32* size_available,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD8(PCR_SetAuthPolicy,
      void(const TPMI_RH_PLATFORM& auth_handle,
           const std::string& auth_handle_name,
           const TPMI_DH_PCR& pcr_num,
           const std::string& pcr_num_name,
           const TPM2B_DIGEST& auth_policy,
           const TPMI_ALG_HASH& policy_digest,
           AuthorizationDelegate* authorization_delegate,
           const PCR_SetAuthPolicyResponse& callback));
  MOCK_METHOD7(PCR_SetAuthPolicySync,
      TPM_RC(const TPMI_RH_PLATFORM& auth_handle,
             const std::string& auth_handle_name,
             const TPMI_DH_PCR& pcr_num,
             const std::string& pcr_num_name,
             const TPM2B_DIGEST& auth_policy,
             const TPMI_ALG_HASH& policy_digest,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD5(PCR_SetAuthValue,
      void(const TPMI_DH_PCR& pcr_handle,
           const std::string& pcr_handle_name,
           const TPM2B_DIGEST& auth,
           AuthorizationDelegate* authorization_delegate,
           const PCR_SetAuthValueResponse& callback));
  MOCK_METHOD4(PCR_SetAuthValueSync,
      TPM_RC(const TPMI_DH_PCR& pcr_handle,
             const std::string& pcr_handle_name,
             const TPM2B_DIGEST& auth,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD4(PCR_Reset,
      void(const TPMI_DH_PCR& pcr_handle,
           const std::string& pcr_handle_name,
           AuthorizationDelegate* authorization_delegate,
           const PCR_ResetResponse& callback));
  MOCK_METHOD3(PCR_ResetSync,
      TPM_RC(const TPMI_DH_PCR& pcr_handle,
             const std::string& pcr_handle_name,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD10(PolicySigned,
      void(const TPMI_DH_OBJECT& auth_object,
           const std::string& auth_object_name,
           const TPMI_SH_POLICY& policy_session,
           const std::string& policy_session_name,
           const TPM2B_NONCE& nonce_tpm,
           const TPM2B_DIGEST& cp_hash_a,
           const TPM2B_NONCE& policy_ref,
           const TPMT_SIGNATURE& auth,
           AuthorizationDelegate* authorization_delegate,
           const PolicySignedResponse& callback));
  // Too many args to mock, forward to *Short version.
  TPM_RC PolicySignedSync(
      const TPMI_DH_OBJECT& auth_object,
      const std::string& auth_object_name,
      const TPMI_SH_POLICY& policy_session,
      const std::string& policy_session_name,
      const TPM2B_NONCE& nonce_tpm,
      const TPM2B_DIGEST& cp_hash_a,
      const TPM2B_NONCE& policy_ref,
      const TPMT_SIGNATURE& auth,
      TPM2B_TIMEOUT* timeout,
      TPMT_TK_AUTH* policy_ticket,
      AuthorizationDelegate* authorization_delegate) override;
  MOCK_METHOD9(PolicySignedSyncShort,
      TPM_RC(const TPMI_DH_OBJECT& auth_object,
             const TPMI_SH_POLICY& policy_session,
             const TPM2B_NONCE& nonce_tpm,
             const TPM2B_DIGEST& cp_hash_a,
             const TPM2B_NONCE& policy_ref,
             const TPMT_SIGNATURE& auth,
             TPM2B_TIMEOUT* timeout,
             TPMT_TK_AUTH* policy_ticket,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD9(PolicySecret,
      void(const TPMI_DH_ENTITY& auth_handle,
           const std::string& auth_handle_name,
           const TPMI_SH_POLICY& policy_session,
           const std::string& policy_session_name,
           const TPM2B_NONCE& nonce_tpm,
           const TPM2B_DIGEST& cp_hash_a,
           const TPM2B_NONCE& policy_ref,
           AuthorizationDelegate* authorization_delegate,
           const PolicySecretResponse& callback));
  MOCK_METHOD10(PolicySecretSync,
      TPM_RC(const TPMI_DH_ENTITY& auth_handle,
             const std::string& auth_handle_name,
             const TPMI_SH_POLICY& policy_session,
             const std::string& policy_session_name,
             const TPM2B_NONCE& nonce_tpm,
             const TPM2B_DIGEST& cp_hash_a,
             const TPM2B_NONCE& policy_ref,
             TPM2B_TIMEOUT* timeout,
             TPMT_TK_AUTH* policy_ticket,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD9(PolicyTicket,
      void(const TPMI_SH_POLICY& policy_session,
           const std::string& policy_session_name,
           const TPM2B_TIMEOUT& timeout,
           const TPM2B_DIGEST& cp_hash_a,
           const TPM2B_NONCE& policy_ref,
           const TPM2B_NAME& auth_name,
           const TPMT_TK_AUTH& ticket,
           AuthorizationDelegate* authorization_delegate,
           const PolicyTicketResponse& callback));
  MOCK_METHOD8(PolicyTicketSync,
      TPM_RC(const TPMI_SH_POLICY& policy_session,
             const std::string& policy_session_name,
             const TPM2B_TIMEOUT& timeout,
             const TPM2B_DIGEST& cp_hash_a,
             const TPM2B_NONCE& policy_ref,
             const TPM2B_NAME& auth_name,
             const TPMT_TK_AUTH& ticket,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD5(PolicyOR,
      void(const TPMI_SH_POLICY& policy_session,
           const std::string& policy_session_name,
           const TPML_DIGEST& p_hash_list,
           AuthorizationDelegate* authorization_delegate,
           const PolicyORResponse& callback));
  MOCK_METHOD4(PolicyORSync,
      TPM_RC(const TPMI_SH_POLICY& policy_session,
             const std::string& policy_session_name,
             const TPML_DIGEST& p_hash_list,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD6(PolicyPCR,
      void(const TPMI_SH_POLICY& policy_session,
           const std::string& policy_session_name,
           const TPM2B_DIGEST& pcr_digest,
           const TPML_PCR_SELECTION& pcrs,
           AuthorizationDelegate* authorization_delegate,
           const PolicyPCRResponse& callback));
  MOCK_METHOD5(PolicyPCRSync,
      TPM_RC(const TPMI_SH_POLICY& policy_session,
             const std::string& policy_session_name,
             const TPM2B_DIGEST& pcr_digest,
             const TPML_PCR_SELECTION& pcrs,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD5(PolicyLocality,
      void(const TPMI_SH_POLICY& policy_session,
           const std::string& policy_session_name,
           const TPMA_LOCALITY& locality,
           AuthorizationDelegate* authorization_delegate,
           const PolicyLocalityResponse& callback));
  MOCK_METHOD4(PolicyLocalitySync,
      TPM_RC(const TPMI_SH_POLICY& policy_session,
             const std::string& policy_session_name,
             const TPMA_LOCALITY& locality,
             AuthorizationDelegate* authorization_delegate));
  // Too many args to mock, forward to *Short version.
  void PolicyNV(const TPMI_RH_NV_AUTH& auth_handle,
                const std::string& auth_handle_name,
                const TPMI_RH_NV_INDEX& nv_index,
                const std::string& nv_index_name,
                const TPMI_SH_POLICY& policy_session,
                const std::string& policy_session_name,
                const TPM2B_OPERAND& operand_b,
                const UINT16& offset,
                const TPM_EO& operation,
                AuthorizationDelegate* authorization_delegate,
                const PolicyNVResponse& callback) override;
  MOCK_METHOD8(PolicyNVShort,
      void(const TPMI_RH_NV_AUTH& auth_handle,
           const TPMI_RH_NV_INDEX& nv_index,
           const TPMI_SH_POLICY& policy_session,
           const TPM2B_OPERAND& operand_b,
           const UINT16& offset,
           const TPM_EO& operation,
           AuthorizationDelegate* authorization_delegate,
           const PolicyNVResponse& callback));
  MOCK_METHOD10(PolicyNVSync,
      TPM_RC(const TPMI_RH_NV_AUTH& auth_handle,
             const std::string& auth_handle_name,
             const TPMI_RH_NV_INDEX& nv_index,
             const std::string& nv_index_name,
             const TPMI_SH_POLICY& policy_session,
             const std::string& policy_session_name,
             const TPM2B_OPERAND& operand_b,
             const UINT16& offset,
             const TPM_EO& operation,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD7(PolicyCounterTimer,
      void(const TPMI_SH_POLICY& policy_session,
           const std::string& policy_session_name,
           const TPM2B_OPERAND& operand_b,
           const UINT16& offset,
           const TPM_EO& operation,
           AuthorizationDelegate* authorization_delegate,
           const PolicyCounterTimerResponse& callback));
  MOCK_METHOD6(PolicyCounterTimerSync,
      TPM_RC(const TPMI_SH_POLICY& policy_session,
             const std::string& policy_session_name,
             const TPM2B_OPERAND& operand_b,
             const UINT16& offset,
             const TPM_EO& operation,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD5(PolicyCommandCode,
      void(const TPMI_SH_POLICY& policy_session,
           const std::string& policy_session_name,
           const TPM_CC& code,
           AuthorizationDelegate* authorization_delegate,
           const PolicyCommandCodeResponse& callback));
  MOCK_METHOD4(PolicyCommandCodeSync,
      TPM_RC(const TPMI_SH_POLICY& policy_session,
             const std::string& policy_session_name,
             const TPM_CC& code,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD4(PolicyPhysicalPresence,
      void(const TPMI_SH_POLICY& policy_session,
           const std::string& policy_session_name,
           AuthorizationDelegate* authorization_delegate,
           const PolicyPhysicalPresenceResponse& callback));
  MOCK_METHOD3(PolicyPhysicalPresenceSync,
      TPM_RC(const TPMI_SH_POLICY& policy_session,
             const std::string& policy_session_name,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD5(PolicyCpHash,
      void(const TPMI_SH_POLICY& policy_session,
           const std::string& policy_session_name,
           const TPM2B_DIGEST& cp_hash_a,
           AuthorizationDelegate* authorization_delegate,
           const PolicyCpHashResponse& callback));
  MOCK_METHOD4(PolicyCpHashSync,
      TPM_RC(const TPMI_SH_POLICY& policy_session,
             const std::string& policy_session_name,
             const TPM2B_DIGEST& cp_hash_a,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD5(PolicyNameHash,
      void(const TPMI_SH_POLICY& policy_session,
           const std::string& policy_session_name,
           const TPM2B_DIGEST& name_hash,
           AuthorizationDelegate* authorization_delegate,
           const PolicyNameHashResponse& callback));
  MOCK_METHOD4(PolicyNameHashSync,
      TPM_RC(const TPMI_SH_POLICY& policy_session,
             const std::string& policy_session_name,
             const TPM2B_DIGEST& name_hash,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD7(PolicyDuplicationSelect,
      void(const TPMI_SH_POLICY& policy_session,
           const std::string& policy_session_name,
           const TPM2B_NAME& object_name,
           const TPM2B_NAME& new_parent_name,
           const TPMI_YES_NO& include_object,
           AuthorizationDelegate* authorization_delegate,
           const PolicyDuplicationSelectResponse& callback));
  MOCK_METHOD6(PolicyDuplicationSelectSync,
      TPM_RC(const TPMI_SH_POLICY& policy_session,
             const std::string& policy_session_name,
             const TPM2B_NAME& object_name,
             const TPM2B_NAME& new_parent_name,
             const TPMI_YES_NO& include_object,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD8(PolicyAuthorize,
      void(const TPMI_SH_POLICY& policy_session,
           const std::string& policy_session_name,
           const TPM2B_DIGEST& approved_policy,
           const TPM2B_NONCE& policy_ref,
           const TPM2B_NAME& key_sign,
           const TPMT_TK_VERIFIED& check_ticket,
           AuthorizationDelegate* authorization_delegate,
           const PolicyAuthorizeResponse& callback));
  MOCK_METHOD7(PolicyAuthorizeSync,
      TPM_RC(const TPMI_SH_POLICY& policy_session,
             const std::string& policy_session_name,
             const TPM2B_DIGEST& approved_policy,
             const TPM2B_NONCE& policy_ref,
             const TPM2B_NAME& key_sign,
             const TPMT_TK_VERIFIED& check_ticket,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD4(PolicyAuthValue,
      void(const TPMI_SH_POLICY& policy_session,
           const std::string& policy_session_name,
           AuthorizationDelegate* authorization_delegate,
           const PolicyAuthValueResponse& callback));
  MOCK_METHOD3(PolicyAuthValueSync,
      TPM_RC(const TPMI_SH_POLICY& policy_session,
             const std::string& policy_session_name,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD4(PolicyPassword,
      void(const TPMI_SH_POLICY& policy_session,
           const std::string& policy_session_name,
           AuthorizationDelegate* authorization_delegate,
           const PolicyPasswordResponse& callback));
  MOCK_METHOD3(PolicyPasswordSync,
      TPM_RC(const TPMI_SH_POLICY& policy_session,
             const std::string& policy_session_name,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD4(PolicyGetDigest,
      void(const TPMI_SH_POLICY& policy_session,
           const std::string& policy_session_name,
           AuthorizationDelegate* authorization_delegate,
           const PolicyGetDigestResponse& callback));
  MOCK_METHOD4(PolicyGetDigestSync,
      TPM_RC(const TPMI_SH_POLICY& policy_session,
             const std::string& policy_session_name,
             TPM2B_DIGEST* policy_digest,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD5(PolicyNvWritten,
      void(const TPMI_SH_POLICY& policy_session,
           const std::string& policy_session_name,
           const TPMI_YES_NO& written_set,
           AuthorizationDelegate* authorization_delegate,
           const PolicyNvWrittenResponse& callback));
  MOCK_METHOD4(PolicyNvWrittenSync,
      TPM_RC(const TPMI_SH_POLICY& policy_session,
             const std::string& policy_session_name,
             const TPMI_YES_NO& written_set,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD8(CreatePrimary,
      void(const TPMI_RH_HIERARCHY& primary_handle,
           const std::string& primary_handle_name,
           const TPM2B_SENSITIVE_CREATE& in_sensitive,
           const TPM2B_PUBLIC& in_public,
           const TPM2B_DATA& outside_info,
           const TPML_PCR_SELECTION& creation_pcr,
           AuthorizationDelegate* authorization_delegate,
           const CreatePrimaryResponse& callback));
  // Too many args to mock, forward to *Short version.
  TPM_RC CreatePrimarySync(
      const TPMI_RH_HIERARCHY& primary_handle,
      const std::string& primary_handle_name,
      const TPM2B_SENSITIVE_CREATE& in_sensitive,
      const TPM2B_PUBLIC& in_public,
      const TPM2B_DATA& outside_info,
      const TPML_PCR_SELECTION& creation_pcr,
      TPM_HANDLE* object_handle,
      TPM2B_PUBLIC* out_public,
      TPM2B_CREATION_DATA* creation_data,
      TPM2B_DIGEST* creation_hash,
      TPMT_TK_CREATION* creation_ticket,
      TPM2B_NAME* name,
      AuthorizationDelegate* authorization_delegate) override;
  MOCK_METHOD10(CreatePrimarySyncShort,
      TPM_RC(const TPMI_RH_HIERARCHY& primary_handle,
             const TPM2B_PUBLIC& in_public,
             const TPML_PCR_SELECTION& creation_pcr,
             TPM_HANDLE* object_handle,
             TPM2B_PUBLIC* out_public,
             TPM2B_CREATION_DATA* creation_data,
             TPM2B_DIGEST* creation_hash,
             TPMT_TK_CREATION* creation_ticket,
             TPM2B_NAME* name,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD6(HierarchyControl,
      void(const TPMI_RH_HIERARCHY& auth_handle,
           const std::string& auth_handle_name,
           const TPMI_RH_ENABLES& enable,
           const TPMI_YES_NO& state,
           AuthorizationDelegate* authorization_delegate,
           const HierarchyControlResponse& callback));
  MOCK_METHOD5(HierarchyControlSync,
      TPM_RC(const TPMI_RH_HIERARCHY& auth_handle,
             const std::string& auth_handle_name,
             const TPMI_RH_ENABLES& enable,
             const TPMI_YES_NO& state,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD6(SetPrimaryPolicy,
      void(const TPMI_RH_HIERARCHY& auth_handle,
           const std::string& auth_handle_name,
           const TPM2B_DIGEST& auth_policy,
           const TPMI_ALG_HASH& hash_alg,
           AuthorizationDelegate* authorization_delegate,
           const SetPrimaryPolicyResponse& callback));
  MOCK_METHOD5(SetPrimaryPolicySync,
      TPM_RC(const TPMI_RH_HIERARCHY& auth_handle,
             const std::string& auth_handle_name,
             const TPM2B_DIGEST& auth_policy,
             const TPMI_ALG_HASH& hash_alg,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD4(ChangePPS,
      void(const TPMI_RH_PLATFORM& auth_handle,
           const std::string& auth_handle_name,
           AuthorizationDelegate* authorization_delegate,
           const ChangePPSResponse& callback));
  MOCK_METHOD3(ChangePPSSync,
      TPM_RC(const TPMI_RH_PLATFORM& auth_handle,
             const std::string& auth_handle_name,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD4(ChangeEPS,
      void(const TPMI_RH_PLATFORM& auth_handle,
           const std::string& auth_handle_name,
           AuthorizationDelegate* authorization_delegate,
           const ChangeEPSResponse& callback));
  MOCK_METHOD3(ChangeEPSSync,
      TPM_RC(const TPMI_RH_PLATFORM& auth_handle,
             const std::string& auth_handle_name,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD4(Clear,
      void(const TPMI_RH_CLEAR& auth_handle,
           const std::string& auth_handle_name,
           AuthorizationDelegate* authorization_delegate,
           const ClearResponse& callback));
  MOCK_METHOD3(ClearSync,
      TPM_RC(const TPMI_RH_CLEAR& auth_handle,
             const std::string& auth_handle_name,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD5(ClearControl,
      void(const TPMI_RH_CLEAR& auth,
           const std::string& auth_name,
           const TPMI_YES_NO& disable,
           AuthorizationDelegate* authorization_delegate,
           const ClearControlResponse& callback));
  MOCK_METHOD4(ClearControlSync,
      TPM_RC(const TPMI_RH_CLEAR& auth,
             const std::string& auth_name,
             const TPMI_YES_NO& disable,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD5(HierarchyChangeAuth,
      void(const TPMI_RH_HIERARCHY_AUTH& auth_handle,
           const std::string& auth_handle_name,
           const TPM2B_AUTH& new_auth,
           AuthorizationDelegate* authorization_delegate,
           const HierarchyChangeAuthResponse& callback));
  MOCK_METHOD4(HierarchyChangeAuthSync,
      TPM_RC(const TPMI_RH_HIERARCHY_AUTH& auth_handle,
             const std::string& auth_handle_name,
             const TPM2B_AUTH& new_auth,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD4(DictionaryAttackLockReset,
      void(const TPMI_RH_LOCKOUT& lock_handle,
           const std::string& lock_handle_name,
           AuthorizationDelegate* authorization_delegate,
           const DictionaryAttackLockResetResponse& callback));
  MOCK_METHOD3(DictionaryAttackLockResetSync,
      TPM_RC(const TPMI_RH_LOCKOUT& lock_handle,
             const std::string& lock_handle_name,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD7(DictionaryAttackParameters,
      void(const TPMI_RH_LOCKOUT& lock_handle,
           const std::string& lock_handle_name,
           const UINT32& new_max_tries,
           const UINT32& new_recovery_time,
           const UINT32& lockout_recovery,
           AuthorizationDelegate* authorization_delegate,
           const DictionaryAttackParametersResponse& callback));
  MOCK_METHOD6(DictionaryAttackParametersSync,
      TPM_RC(const TPMI_RH_LOCKOUT& lock_handle,
             const std::string& lock_handle_name,
             const UINT32& new_max_tries,
             const UINT32& new_recovery_time,
             const UINT32& lockout_recovery,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD6(PP_Commands,
      void(const TPMI_RH_PLATFORM& auth,
           const std::string& auth_name,
           const TPML_CC& set_list,
           const TPML_CC& clear_list,
           AuthorizationDelegate* authorization_delegate,
           const PP_CommandsResponse& callback));
  MOCK_METHOD5(PP_CommandsSync,
      TPM_RC(const TPMI_RH_PLATFORM& auth,
             const std::string& auth_name,
             const TPML_CC& set_list,
             const TPML_CC& clear_list,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD5(SetAlgorithmSet,
      void(const TPMI_RH_PLATFORM& auth_handle,
           const std::string& auth_handle_name,
           const UINT32& algorithm_set,
           AuthorizationDelegate* authorization_delegate,
           const SetAlgorithmSetResponse& callback));
  MOCK_METHOD4(SetAlgorithmSetSync,
      TPM_RC(const TPMI_RH_PLATFORM& auth_handle,
             const std::string& auth_handle_name,
             const UINT32& algorithm_set,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD8(FieldUpgradeStart,
      void(const TPMI_RH_PLATFORM& authorization,
           const std::string& authorization_name,
           const TPMI_DH_OBJECT& key_handle,
           const std::string& key_handle_name,
           const TPM2B_DIGEST& fu_digest,
           const TPMT_SIGNATURE& manifest_signature,
           AuthorizationDelegate* authorization_delegate,
           const FieldUpgradeStartResponse& callback));
  MOCK_METHOD7(FieldUpgradeStartSync,
      TPM_RC(const TPMI_RH_PLATFORM& authorization,
             const std::string& authorization_name,
             const TPMI_DH_OBJECT& key_handle,
             const std::string& key_handle_name,
             const TPM2B_DIGEST& fu_digest,
             const TPMT_SIGNATURE& manifest_signature,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD3(FieldUpgradeData,
      void(const TPM2B_MAX_BUFFER& fu_data,
           AuthorizationDelegate* authorization_delegate,
           const FieldUpgradeDataResponse& callback));
  MOCK_METHOD4(FieldUpgradeDataSync,
      TPM_RC(const TPM2B_MAX_BUFFER& fu_data,
             TPMT_HA* next_digest,
             TPMT_HA* first_digest,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD3(FirmwareRead,
      void(const UINT32& sequence_number,
           AuthorizationDelegate* authorization_delegate,
           const FirmwareReadResponse& callback));
  MOCK_METHOD3(FirmwareReadSync,
      TPM_RC(const UINT32& sequence_number,
             TPM2B_MAX_BUFFER* fu_data,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD4(ContextSave,
      void(const TPMI_DH_CONTEXT& save_handle,
           const std::string& save_handle_name,
           AuthorizationDelegate* authorization_delegate,
           const ContextSaveResponse& callback));
  MOCK_METHOD4(ContextSaveSync,
      TPM_RC(const TPMI_DH_CONTEXT& save_handle,
             const std::string& save_handle_name,
             TPMS_CONTEXT* context,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD3(ContextLoad,
      void(const TPMS_CONTEXT& context,
           AuthorizationDelegate* authorization_delegate,
           const ContextLoadResponse& callback));
  MOCK_METHOD3(ContextLoadSync,
      TPM_RC(const TPMS_CONTEXT& context,
             TPMI_DH_CONTEXT* loaded_handle,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD3(FlushContext,
      void(const TPMI_DH_CONTEXT& flush_handle,
           AuthorizationDelegate* authorization_delegate,
           const FlushContextResponse& callback));
  MOCK_METHOD2(FlushContextSync,
      TPM_RC(const TPMI_DH_CONTEXT& flush_handle,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD7(EvictControl,
      void(const TPMI_RH_PROVISION& auth,
           const std::string& auth_name,
           const TPMI_DH_OBJECT& object_handle,
           const std::string& object_handle_name,
           const TPMI_DH_PERSISTENT& persistent_handle,
           AuthorizationDelegate* authorization_delegate,
           const EvictControlResponse& callback));
  MOCK_METHOD6(EvictControlSync,
      TPM_RC(const TPMI_RH_PROVISION& auth,
             const std::string& auth_name,
             const TPMI_DH_OBJECT& object_handle,
             const std::string& object_handle_name,
             const TPMI_DH_PERSISTENT& persistent_handle,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD2(ReadClock,
      void(AuthorizationDelegate* authorization_delegate,
           const ReadClockResponse& callback));
  MOCK_METHOD3(ReadClockSync,
      TPM_RC(TPM_RC* return_code,
             TPMS_TIME_INFO* current_time,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD5(ClockSet,
      void(const TPMI_RH_PROVISION& auth,
           const std::string& auth_name,
           const UINT64& new_time,
           AuthorizationDelegate* authorization_delegate,
           const ClockSetResponse& callback));
  MOCK_METHOD5(ClockSetSync,
      TPM_RC(const TPMI_RH_PROVISION& auth,
             const std::string& auth_name,
             const UINT64& new_time,
             TPM_RC* return_code,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD5(ClockRateAdjust,
      void(const TPMI_RH_PROVISION& auth,
           const std::string& auth_name,
           const TPM_CLOCK_ADJUST& rate_adjust,
           AuthorizationDelegate* authorization_delegate,
           const ClockRateAdjustResponse& callback));
  MOCK_METHOD5(ClockRateAdjustSync,
      TPM_RC(const TPMI_RH_PROVISION& auth,
             const std::string& auth_name,
             const TPM_CLOCK_ADJUST& rate_adjust,
             TPM_RC* return_code,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD5(GetCapability,
      void(const TPM_CAP& capability,
           const UINT32& property,
           const UINT32& property_count,
           AuthorizationDelegate* authorization_delegate,
           const GetCapabilityResponse& callback));
  MOCK_METHOD6(GetCapabilitySync,
      TPM_RC(const TPM_CAP& capability,
             const UINT32& property,
             const UINT32& property_count,
             TPMI_YES_NO* more_data,
             TPMS_CAPABILITY_DATA* capability_data,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD3(TestParms,
      void(const TPMT_PUBLIC_PARMS& parameters,
           AuthorizationDelegate* authorization_delegate,
           const TestParmsResponse& callback));
  MOCK_METHOD2(TestParmsSync,
      TPM_RC(const TPMT_PUBLIC_PARMS& parameters,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD6(NV_DefineSpace,
      void(const TPMI_RH_PROVISION& auth_handle,
           const std::string& auth_handle_name,
           const TPM2B_AUTH& auth,
           const TPM2B_NV_PUBLIC& public_info,
           AuthorizationDelegate* authorization_delegate,
           const NV_DefineSpaceResponse& callback));
  MOCK_METHOD5(NV_DefineSpaceSync,
      TPM_RC(const TPMI_RH_PROVISION& auth_handle,
             const std::string& auth_handle_name,
             const TPM2B_AUTH& auth,
             const TPM2B_NV_PUBLIC& public_info,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD6(NV_UndefineSpace,
      void(const TPMI_RH_PROVISION& auth_handle,
           const std::string& auth_handle_name,
           const TPMI_RH_NV_INDEX& nv_index,
           const std::string& nv_index_name,
           AuthorizationDelegate* authorization_delegate,
           const NV_UndefineSpaceResponse& callback));
  MOCK_METHOD5(NV_UndefineSpaceSync,
      TPM_RC(const TPMI_RH_PROVISION& auth_handle,
             const std::string& auth_handle_name,
             const TPMI_RH_NV_INDEX& nv_index,
             const std::string& nv_index_name,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD6(NV_UndefineSpaceSpecial,
      void(const TPMI_RH_NV_INDEX& nv_index,
           const std::string& nv_index_name,
           const TPMI_RH_PLATFORM& platform,
           const std::string& platform_name,
           AuthorizationDelegate* authorization_delegate,
           const NV_UndefineSpaceSpecialResponse& callback));
  MOCK_METHOD5(NV_UndefineSpaceSpecialSync,
      TPM_RC(const TPMI_RH_NV_INDEX& nv_index,
             const std::string& nv_index_name,
             const TPMI_RH_PLATFORM& platform,
             const std::string& platform_name,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD4(NV_ReadPublic,
      void(const TPMI_RH_NV_INDEX& nv_index,
           const std::string& nv_index_name,
           AuthorizationDelegate* authorization_delegate,
           const NV_ReadPublicResponse& callback));
  MOCK_METHOD5(NV_ReadPublicSync,
      TPM_RC(const TPMI_RH_NV_INDEX& nv_index,
             const std::string& nv_index_name,
             TPM2B_NV_PUBLIC* nv_public,
             TPM2B_NAME* nv_name,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD8(NV_Write,
      void(const TPMI_RH_NV_AUTH& auth_handle,
           const std::string& auth_handle_name,
           const TPMI_RH_NV_INDEX& nv_index,
           const std::string& nv_index_name,
           const TPM2B_MAX_NV_BUFFER& data,
           const UINT16& offset,
           AuthorizationDelegate* authorization_delegate,
           const NV_WriteResponse& callback));
  MOCK_METHOD7(NV_WriteSync,
      TPM_RC(const TPMI_RH_NV_AUTH& auth_handle,
             const std::string& auth_handle_name,
             const TPMI_RH_NV_INDEX& nv_index,
             const std::string& nv_index_name,
             const TPM2B_MAX_NV_BUFFER& data,
             const UINT16& offset,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD6(NV_Increment,
      void(const TPMI_RH_NV_AUTH& auth_handle,
           const std::string& auth_handle_name,
           const TPMI_RH_NV_INDEX& nv_index,
           const std::string& nv_index_name,
           AuthorizationDelegate* authorization_delegate,
           const NV_IncrementResponse& callback));
  MOCK_METHOD5(NV_IncrementSync,
      TPM_RC(const TPMI_RH_NV_AUTH& auth_handle,
             const std::string& auth_handle_name,
             const TPMI_RH_NV_INDEX& nv_index,
             const std::string& nv_index_name,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD7(NV_Extend,
      void(const TPMI_RH_NV_AUTH& auth_handle,
           const std::string& auth_handle_name,
           const TPMI_RH_NV_INDEX& nv_index,
           const std::string& nv_index_name,
           const TPM2B_MAX_NV_BUFFER& data,
           AuthorizationDelegate* authorization_delegate,
           const NV_ExtendResponse& callback));
  MOCK_METHOD6(NV_ExtendSync,
      TPM_RC(const TPMI_RH_NV_AUTH& auth_handle,
             const std::string& auth_handle_name,
             const TPMI_RH_NV_INDEX& nv_index,
             const std::string& nv_index_name,
             const TPM2B_MAX_NV_BUFFER& data,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD7(NV_SetBits,
      void(const TPMI_RH_NV_AUTH& auth_handle,
           const std::string& auth_handle_name,
           const TPMI_RH_NV_INDEX& nv_index,
           const std::string& nv_index_name,
           const UINT64& bits,
           AuthorizationDelegate* authorization_delegate,
           const NV_SetBitsResponse& callback));
  MOCK_METHOD6(NV_SetBitsSync,
      TPM_RC(const TPMI_RH_NV_AUTH& auth_handle,
             const std::string& auth_handle_name,
             const TPMI_RH_NV_INDEX& nv_index,
             const std::string& nv_index_name,
             const UINT64& bits,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD6(NV_WriteLock,
      void(const TPMI_RH_NV_AUTH& auth_handle,
           const std::string& auth_handle_name,
           const TPMI_RH_NV_INDEX& nv_index,
           const std::string& nv_index_name,
           AuthorizationDelegate* authorization_delegate,
           const NV_WriteLockResponse& callback));
  MOCK_METHOD5(NV_WriteLockSync,
      TPM_RC(const TPMI_RH_NV_AUTH& auth_handle,
             const std::string& auth_handle_name,
             const TPMI_RH_NV_INDEX& nv_index,
             const std::string& nv_index_name,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD4(NV_GlobalWriteLock,
      void(const TPMI_RH_PROVISION& auth_handle,
           const std::string& auth_handle_name,
           AuthorizationDelegate* authorization_delegate,
           const NV_GlobalWriteLockResponse& callback));
  MOCK_METHOD3(NV_GlobalWriteLockSync,
      TPM_RC(const TPMI_RH_PROVISION& auth_handle,
             const std::string& auth_handle_name,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD8(NV_Read,
      void(const TPMI_RH_NV_AUTH& auth_handle,
           const std::string& auth_handle_name,
           const TPMI_RH_NV_INDEX& nv_index,
           const std::string& nv_index_name,
           const UINT16& size,
           const UINT16& offset,
           AuthorizationDelegate* authorization_delegate,
           const NV_ReadResponse& callback));
  MOCK_METHOD8(NV_ReadSync,
      TPM_RC(const TPMI_RH_NV_AUTH& auth_handle,
             const std::string& auth_handle_name,
             const TPMI_RH_NV_INDEX& nv_index,
             const std::string& nv_index_name,
             const UINT16& size,
             const UINT16& offset,
             TPM2B_MAX_NV_BUFFER* data,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD6(NV_ReadLock,
      void(const TPMI_RH_NV_AUTH& auth_handle,
           const std::string& auth_handle_name,
           const TPMI_RH_NV_INDEX& nv_index,
           const std::string& nv_index_name,
           AuthorizationDelegate* authorization_delegate,
           const NV_ReadLockResponse& callback));
  MOCK_METHOD5(NV_ReadLockSync,
      TPM_RC(const TPMI_RH_NV_AUTH& auth_handle,
             const std::string& auth_handle_name,
             const TPMI_RH_NV_INDEX& nv_index,
             const std::string& nv_index_name,
             AuthorizationDelegate* authorization_delegate));
  MOCK_METHOD5(NV_ChangeAuth,
      void(const TPMI_RH_NV_INDEX& nv_index,
           const std::string& nv_index_name,
           const TPM2B_AUTH& new_auth,
           AuthorizationDelegate* authorization_delegate,
           const NV_ChangeAuthResponse& callback));
  MOCK_METHOD4(NV_ChangeAuthSync,
      TPM_RC(const TPMI_RH_NV_INDEX& nv_index,
             const std::string& nv_index_name,
             const TPM2B_AUTH& new_auth,
             AuthorizationDelegate* authorization_delegate));
  // Too many args to mock, forward to *Short version.
  void NV_Certify(const TPMI_DH_OBJECT& sign_handle,
                  const std::string& sign_handle_name,
                  const TPMI_RH_NV_AUTH& auth_handle,
                  const std::string& auth_handle_name,
                  const TPMI_RH_NV_INDEX& nv_index,
                  const std::string& nv_index_name,
                  const TPM2B_DATA& qualifying_data,
                  const TPMT_SIG_SCHEME& in_scheme,
                  const UINT16& size,
                  const UINT16& offset,
                  AuthorizationDelegate* authorization_delegate,
                  const NV_CertifyResponse& callback) override;
  MOCK_METHOD9(NV_CertifyShort,
      void(const TPMI_DH_OBJECT& sign_handle,
           const TPMI_RH_NV_AUTH& auth_handle,
           const TPMI_RH_NV_INDEX& nv_index,
           const TPM2B_DATA& qualifying_data,
           const TPMT_SIG_SCHEME& in_scheme,
           const UINT16& size,
           const UINT16& offset,
           AuthorizationDelegate* authorization_delegate,
           const NV_CertifyResponse& callback));
  // Too many args to mock, forward to *Short version.
  TPM_RC NV_CertifySync(
      const TPMI_DH_OBJECT& sign_handle,
      const std::string& sign_handle_name,
      const TPMI_RH_NV_AUTH& auth_handle,
      const std::string& auth_handle_name,
      const TPMI_RH_NV_INDEX& nv_index,
      const std::string& nv_index_name,
      const TPM2B_DATA& qualifying_data,
      const TPMT_SIG_SCHEME& in_scheme,
      const UINT16& size,
      const UINT16& offset,
      TPM2B_ATTEST* certify_info,
      TPMT_SIGNATURE* signature,
      AuthorizationDelegate* authorization_delegate) override;
  MOCK_METHOD10(NV_CertifySyncShort,
      TPM_RC(const TPMI_DH_OBJECT& sign_handle,
             const TPMI_RH_NV_AUTH& auth_handle,
             const TPMI_RH_NV_INDEX& nv_index,
             const TPM2B_DATA& qualifying_data,
             const TPMT_SIG_SCHEME& in_scheme,
             const UINT16& size,
             const UINT16& offset,
             TPM2B_ATTEST* certify_info,
             TPMT_SIGNATURE* signature,
             AuthorizationDelegate* authorization_delegate));
};

}  // namespace trunks

#endif  // TRUNKS_MOCK_TPM_H_
